home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / programming / source / yak160src.lha / Yak_1.60_Src / popup.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-10-14  |  14.8 KB  |  531 lines

  1.  
  2. /*
  3.  *  Source machine generated by GadToolsBox V2.0b
  4.  *  which is (c) Copyright 1991-1993 Jaba Development
  5.  *
  6.  *  GUI Designed by : Martin W Scott and GaĆ«l Marziou
  7.  */
  8.  
  9.  
  10.  
  11.  
  12. #include <exec/types.h>
  13. #include <intuition/intuition.h>
  14. #include <intuition/classes.h>
  15. #include <intuition/classusr.h>
  16. #include <intuition/imageclass.h>
  17. #include <intuition/gadgetclass.h>
  18. #include <intuition/intuitionbase.h>
  19. #include <libraries/gadtools.h>
  20. #include <graphics/displayinfo.h>
  21. #include <graphics/gfxbase.h>
  22. #include <proto/exec.h>
  23. #include <proto/intuition.h>
  24. #include <proto/gadtools.h>
  25. #include <proto/graphics.h>
  26. #include <proto/locale.h>
  27. #include <proto/utility.h>
  28. #include <string.h>
  29.  
  30. #include "code.h"
  31. #include "version.h"
  32. #include "yak.h"
  33. #include "gui.h"
  34.  
  35. #define CATCOMP_NUMBERS
  36. #include "locale/yak_locale_strings.h"
  37.  
  38. #ifdef BETA_VERSION
  39. static UBYTE DisplayBetaRequester = TRUE;
  40. #endif
  41.  
  42.  
  43. extern struct Catalog    *Catalog;
  44.  
  45. struct Screen   *Scr = NULL;
  46. UBYTE           *PubScreenName;
  47. APTR             VisualInfo = NULL;
  48. struct Window   *RootWnd = NULL;
  49. struct Gadget   *RootGList = NULL;
  50. struct Menu     *RootMenus = NULL;
  51. struct Gadget   *RootGadgets[Root_CNT];
  52. UWORD            RootLeft = 0;
  53. UWORD            RootWidth = 586;
  54. UWORD            RootHeight = 138;
  55. UWORD            WindowTop;
  56. UBYTE           *RootWdt = NULL;
  57. struct TextAttr *Font,Attr;
  58. UWORD            FontX,FontY; 
  59. UWORD            OffX,OffY;
  60.  
  61. static BOOL GUIFirstOpening = TRUE;
  62.  
  63.  
  64. #define ROOT_TNUM 2
  65.  
  66. struct IntuiText RootIText[ROOT_TNUM] = 
  67. {
  68.     2,0,JAM1,37,7,NULL,NULL,NULL,
  69.     2,0,JAM1,301,7,NULL,NULL,NULL,
  70. };
  71.  
  72.  
  73.  
  74. static VOID
  75. InitIText(VOID)
  76. {
  77.    RootIText[0].IText = getString(TOGGLES_STRING);
  78.    RootIText[1].IText = getString(INCLUSION_PATTERNS_STRING);
  79.    BlankIText[0].IText = getString(TIMEOUT_STRING);
  80. }
  81.  
  82. struct NewMenu RootNewMenu[] = 
  83. {
  84.     NM_TITLE,NULL,NULL,0,NULL,NULL,
  85.     NM_ITEM ,NULL,NULL,0,0L  ,NULL,
  86.     NM_ITEM ,NULL,NULL,0,0L  ,NULL,
  87.     NM_ITEM ,NULL,NULL,0,0L  ,NULL,
  88.     NM_ITEM ,NULL,NULL,0,0L  ,NULL,
  89.     NM_ITEM ,NULL,NULL,0,NULL,NULL,
  90.     NM_SUB  ,NULL,NULL,0,0L  ,NULL,
  91.     NM_SUB  ,NULL,NULL,0,0L  ,NULL,
  92.     NM_SUB  ,NULL,NULL,0,0L  ,NULL,
  93.     NM_SUB  ,NULL,NULL,0,0L  ,NULL,
  94.     NM_SUB  ,NULL,NULL,0,0L  ,NULL,
  95.     NM_END  ,NULL,NULL,0,0L  ,NULL 
  96. };
  97.  
  98. VOID InitRootNewMenu (VOID)
  99. {
  100.         RootNewMenu[0].nm_Label   = (STRPTR)getString(PROJECT_STRING);
  101.         RootNewMenu[1].nm_Label   = (STRPTR)getString(LOAD_SETTINGS_STRING);
  102.         RootNewMenu[1].nm_CommKey = (STRPTR)getString(LOAD_SHORTCUT);
  103.         RootNewMenu[2].nm_Label   = (STRPTR)getString(SAVE_SETTINGS_STRING);
  104.         RootNewMenu[2].nm_CommKey = (STRPTR)getString(SAVE_SHORTCUT);
  105.         RootNewMenu[3].nm_Label   = (STRPTR)getString(HIDE_WINDOW_STRING);
  106.         RootNewMenu[3].nm_CommKey = (STRPTR)getString(HIDE_SHORTCUT);
  107.         RootNewMenu[4].nm_Label   = (STRPTR)getString(QUIT_STRING);
  108.         RootNewMenu[4].nm_CommKey = (STRPTR)getString(QUIT_SHORTCUT);
  109.         RootNewMenu[5].nm_Label   = (STRPTR)getString(Credits_STRING);
  110.         RootNewMenu[6].nm_Label   = (STRPTR)getString(Credits_Line1_STRING);
  111.         RootNewMenu[7].nm_Label   = (STRPTR)getString(Credits_Line2_STRING);
  112.         RootNewMenu[8].nm_Label   = (STRPTR)getString(Credits_Line3_STRING);
  113.         RootNewMenu[9].nm_Label   = (STRPTR)getString(Credits_Line4_STRING);
  114.         RootNewMenu[10].nm_Label  = (STRPTR)getString(Credits_Line5_STRING);
  115. }
  116.  
  117. UWORD RootGTypes[] = 
  118. {
  119.         BUTTON_KIND,
  120.         BUTTON_KIND,
  121.         CHECKBOX_KIND,
  122.         CHECKBOX_KIND,
  123.         CHECKBOX_KIND,
  124.         CHECKBOX_KIND,
  125.         CHECKBOX_KIND,
  126.         CHECKBOX_KIND,
  127.         CHECKBOX_KIND,
  128.         CHECKBOX_KIND,
  129.         BUTTON_KIND,
  130.         BUTTON_KIND,
  131.         STRING_KIND,
  132.         STRING_KIND,
  133.         STRING_KIND,
  134.         STRING_KIND,
  135.         CHECKBOX_KIND,
  136.         BUTTON_KIND,
  137.         CHECKBOX_KIND
  138. };
  139.  
  140.  
  141. struct NewGadget RootNGad[] = 
  142. {
  143.         226,121,175,14,NULL,NULL,GD_Hide         ,PLACETEXT_IN   ,NULL,NULL,
  144.         405,121,175,14,NULL,NULL,GD_Quit         ,PLACETEXT_IN   ,NULL,NULL,
  145.           6,15,26,11,NULL,NULL,GD_AutoCheck      ,PLACETEXT_RIGHT,NULL,NULL,
  146.           6,39,26,11,NULL,NULL,GD_KeyActCheck    ,PLACETEXT_RIGHT,NULL,NULL,
  147.           6,51,26,11,NULL,NULL,GD_CTFCheck       ,PLACETEXT_RIGHT,NULL,NULL,
  148.           6,63,26,11,NULL,NULL,GD_CTBCheck       ,PLACETEXT_RIGHT,NULL,NULL,
  149.           6,99,26,11,NULL,NULL,GD_ScrCycleCheck  ,PLACETEXT_RIGHT,NULL,NULL,
  150.           6,111,26,11,NULL,NULL,GD_ScrActCheck   ,PLACETEXT_RIGHT,NULL,NULL,
  151.           6,27,26,11,NULL,NULL,GD_AutoPopCheck   ,PLACETEXT_RIGHT,NULL,NULL,
  152.           6,87,26,11,NULL,NULL,GD_RMBActCheck    ,PLACETEXT_RIGHT,NULL,NULL,
  153.         405,105,175,14,NULL,NULL,GD_Miscellaneous,PLACETEXT_IN   ,NULL,NULL,
  154.         226,105,175,14,NULL,NULL,GD_EditHotkeys  ,PLACETEXT_IN   ,NULL,NULL,
  155.         423,18,157,14,NULL,NULL,GD_AutoPat       ,PLACETEXT_LEFT ,NULL,NULL,
  156.         423,33,157,14,NULL,NULL,GD_ClickPat      ,PLACETEXT_LEFT ,NULL,NULL,
  157.         423,48,157,14,NULL,NULL,GD_PopPat        ,PLACETEXT_LEFT ,NULL,NULL,
  158.         423,63,157,14,NULL,NULL,GD_ClickWinPat   ,PLACETEXT_LEFT ,NULL,NULL,
  159.           6,75,26,11,NULL,NULL,GD_MMBActCheck    ,PLACETEXT_RIGHT,NULL,NULL,
  160.         405,89,175,14,NULL,NULL,GD_Blanking      ,PLACETEXT_IN   ,NULL,NULL,
  161.           6,123,26,11,NULL,NULL,GD_MMBShiftCheck ,PLACETEXT_RIGHT,NULL,NULL
  162. };
  163.  
  164. VOID InitRootNGad (VOID)
  165. {
  166.         RootNGad[GD_Hide].ng_GadgetText          = getString(HIDE_STRING);
  167.         RootNGad[GD_Quit].ng_GadgetText          = getString(QUIT_STRING);
  168.         RootNGad[GD_AutoCheck].ng_GadgetText     = getString(AUTOPOINT_STRING);
  169.         RootNGad[GD_KeyActCheck].ng_GadgetText   = getString(KEY_ACTIVATE_STRING);
  170.         RootNGad[GD_CTFCheck].ng_GadgetText      = getString(CLICK_TO_FRONT_STRING);
  171.         RootNGad[GD_CTBCheck].ng_GadgetText      = getString(CLICK_TO_BACK_STRING);
  172.         RootNGad[GD_ScrCycleCheck].ng_GadgetText = getString(CYCLE_SCREENS_STRING);
  173.         RootNGad[GD_ScrActCheck].ng_GadgetText   = getString(SCREEN_ACTIVATE_STRING);
  174.         RootNGad[GD_AutoPopCheck].ng_GadgetText  = getString(AUTOPOPTOFRONT_STRING);
  175.         RootNGad[GD_RMBActCheck].ng_GadgetText   = getString(RMB_ACTIVATE_STRING);
  176.         RootNGad[GD_Miscellaneous].ng_GadgetText = getString(MISCELLANEOUS_STRING);
  177.         RootNGad[GD_EditHotkeys].ng_GadgetText   = getString(EDIT_HOTKEYS_STRING);
  178.         RootNGad[GD_AutoPat].ng_GadgetText       = getString(AUTOSCREENS_STRING);
  179.         RootNGad[GD_ClickPat].ng_GadgetText      = getString(CLICKSCREENS_STRING);
  180.         RootNGad[GD_PopPat].ng_GadgetText        = getString(POPWINDOWS_STRING);
  181.         RootNGad[GD_ClickWinPat].ng_GadgetText   = getString(CLICKWINDOWS_STRING);
  182.         RootNGad[GD_MMBActCheck].ng_GadgetText   = getString(MMB_ACTIVATE_STRING);
  183.         RootNGad[GD_Blanking].ng_GadgetText      = getString(Blanking);
  184.         RootNGad[GD_MMBShiftCheck].ng_GadgetText = getString(MMB_SHIFT_STRING);
  185. }
  186.  
  187.  
  188.  
  189. VOID InitGUI (VOID)
  190. {
  191.         static char title[80];
  192.  
  193. #ifdef BETA_VERSION
  194.         if (DisplayBetaRequester == TRUE)
  195.         {
  196.                 PostError("This is " VERSION_NAME " beta version\nBuilt on " __AMIGADATE__);
  197.                 DisplayBetaRequester = FALSE;
  198.         }
  199. #endif
  200.  
  201.         strcpy(title,VERSION_NAME ": ");
  202.         strcat(title,getString(Hotkey_Window_TITLE));
  203.         strcat(title,PopKeyStr);
  204.         strcat(title,">");
  205.         RootWdt = title;
  206.  
  207.         HotKeyWdt = getString(EDIT_HOTKEYS_STRING);
  208.  
  209.         MiscWdt = getString(MISCELLANEOUS_STRING);
  210.  
  211.         BlankWdt = getString(Blanking);
  212.  
  213.         InitOptions1Label ();
  214.         InitIText ();
  215.         InitRootNewMenu ();
  216.         InitRootNGad ();
  217.         InitActions1Nodes ();
  218.         InitHotKeyNGad ();
  219.         InitMiscNGad ();
  220.         InitMBMethod0Labels ();
  221.         InitBlankNGad ();
  222.         InitKeyDefNGad ();
  223.         InitClass0Labels ();
  224.         InitStroke0Labels ();
  225. }
  226.  
  227.  
  228. ULONG RootGTags[] = 
  229. {
  230.         (TAG_DONE),
  231.         (TAG_DONE),
  232.         (GTCB_Scaled),TRUE,(TAG_DONE),
  233.         (GTCB_Scaled),TRUE,(TAG_DONE),
  234.         (GTCB_Scaled),TRUE,(TAG_DONE),
  235.         (GTCB_Scaled),TRUE,(TAG_DONE),
  236.         (GTCB_Scaled),TRUE,(TAG_DONE),
  237.         (GTCB_Scaled),TRUE,(TAG_DONE),
  238.         (GTCB_Scaled),TRUE,(TAG_DONE),
  239.         (GTCB_Scaled),TRUE,(TAG_DONE),
  240.         (TAG_DONE),
  241.         (TAG_DONE),
  242.         (GTST_MaxChars),99,(TAG_DONE),
  243.         (GTST_MaxChars),99,(TAG_DONE),
  244.         (GTST_MaxChars),99,(TAG_DONE),
  245.         (GTST_MaxChars),99,(TAG_DONE),
  246.         (GTCB_Scaled),TRUE,(TAG_DONE),
  247.         (TAG_DONE),
  248.         (GTCB_Scaled),TRUE,(TAG_DONE)
  249. };
  250.  
  251.  
  252.  
  253. UWORD ComputeX(UWORD value)
  254. {
  255.         return((UWORD)(((FontX*value)+4)/8));
  256. }
  257.  
  258.  
  259. UWORD ComputeY(UWORD value)
  260. {
  261.         return((UWORD)(((FontY*value)+4)/8));
  262. }
  263.  
  264.  
  265.  
  266.  
  267. VOID ComputeFont(UWORD width,UWORD height)
  268. {
  269.         Font = &Attr;
  270.         Font->ta_Name = (STRPTR)Scr->RastPort.Font->tf_Message.mn_Node.ln_Name;
  271.         Font->ta_YSize = FontY = Scr->RastPort.Font->tf_YSize;
  272.  
  273.         FontX = CalcFontX();
  274.  
  275.         /* Don't go under 8 points */
  276.         if (FontY < 8) FontY = 8;
  277.  
  278.         OffX = Scr->WBorLeft;
  279.         OffY = Scr->RastPort.TxHeight +Scr->WBorTop +1;
  280.  
  281.         if (width && height) {
  282.                 if ((ComputeX(width) +OffX +Scr->WBorRight) > Scr->Width)
  283.                 goto UseTopaz;
  284.                 if ((ComputeY(height) +OffY +Scr->WBorBottom) > Scr->Height)
  285.                 goto UseTopaz;
  286.         }
  287.         return;
  288.  
  289. UseTopaz:
  290.         Font->ta_Name = (STRPTR)"topaz.font";
  291.         FontX = FontY = Font->ta_YSize = 8;
  292. }
  293.  
  294.  
  295.  
  296. UBYTE
  297. *GetPubScreenName( struct Screen *s)
  298. {
  299.         struct PubScreenNode *psnode; 
  300.         UBYTE *PSName;
  301.  
  302.         PSName = NULL;
  303.         if (s->Flags & WBENCHSCREEN)
  304.         {
  305.                 PSName = "Workbench";
  306.         }
  307.         else
  308.         {
  309.                 if (s->Flags & PUBLICSCREEN)
  310.                 {
  311.                         /* s is a public screen so find its name */
  312.  
  313.                         psnode=(struct PubScreenNode *)LockPubScreenList();
  314.  
  315.                         while ((psnode) && !(PSName))
  316.                         {
  317.                                 if ((psnode->psn_Flags != PSNF_PRIVATE) && (psnode->psn_Screen == s)) 
  318.                                 {
  319.                                         /* found it */
  320.                                         PSName = psnode->psn_Node.ln_Name;
  321.                                 }
  322.                                 else
  323.                                 {       
  324.                                         /* check next one */
  325.                                         psnode = (struct PubScreenNode *)psnode->psn_Node.ln_Succ;
  326.                                 }
  327.                         }
  328.  
  329.                         UnlockPubScreenList();                
  330.                 }
  331.         }
  332.         return(PSName);
  333.  
  334. int 
  335. SetupScreen()
  336. {
  337.         struct Screen *s;
  338.         ULONG lock;
  339.  
  340.         /* Choose a public screen to open our window */
  341.         lock = LockIBase(0);
  342.         s = AS;
  343.         UnlockIBase(lock);
  344.   
  345.         PubScreenName = GetPubScreenName(s);
  346.  
  347.         if (! (Scr = LockPubScreen(PubScreenName)))
  348.                 return(1L);
  349.  
  350.         ScreenToFront(Scr);
  351.  
  352.         ComputeFont(0,0);
  353.  
  354.         if (GUIFirstOpening)
  355.         {
  356.                 GUIFirstOpening = FALSE;
  357.                 WindowTop = Scr->BarHeight +1;
  358.         };
  359.  
  360.         if (! (VisualInfo = GetVisualInfo(Scr,TAG_DONE)))
  361.                 return(2L);
  362.  
  363.         return(0L);
  364. }
  365.  
  366.  
  367.  
  368.  
  369. VOID CloseDownScreen()
  370. {
  371.         if (VisualInfo) {
  372.                 FreeVisualInfo(VisualInfo);
  373.                 VisualInfo = NULL;
  374.         }
  375.  
  376.         if (Scr) {
  377.                 UnlockPubScreen(NULL,Scr);
  378.                 Scr = NULL;
  379.         }
  380. }
  381.  
  382.  
  383.  
  384.  
  385. VOID RootRender()
  386. {
  387.     UBYTE cnt;
  388.     UWORD X,Y;
  389.  
  390.     ComputeFont(RootWidth,RootHeight);
  391.  
  392.     /* Other windows gadgets box */
  393.  
  394.     X = OffX +ComputeX(220);
  395.     Y = OffY +ComputeY(86);
  396.     DrawBevelBox(RootWnd->RPort,X,Y,
  397.                  ComputeX(366),
  398.                  ComputeY(51),
  399.                  GT_VisualInfo,VisualInfo,TAG_DONE);
  400.  
  401.     /* Inclusion Patterns box */
  402.     Y = OffY;
  403.     DrawBevelBox(RootWnd->RPort,X,Y,
  404.                  ComputeX(366),
  405.                  ComputeY(86),
  406.                  GT_VisualInfo,VisualInfo,TAG_DONE);
  407.     RootIText[ 1 ].LeftEdge  = X +5;
  408.     RootIText[ 1 ].TopEdge   = Y +3;
  409.  
  410.     /* Toggles box */
  411.     X = OffX;
  412.     DrawBevelBox(RootWnd->RPort,X,Y,
  413.                  ComputeX(220),
  414.                  ComputeY(138),
  415.                  GT_VisualInfo,VisualInfo,TAG_DONE);
  416.     RootIText[ 0 ].LeftEdge  = X +5;
  417.     RootIText[ 0 ].TopEdge   = Y +3;
  418.  
  419.     for (cnt = 0; cnt < ROOT_TNUM; cnt++) 
  420.     {
  421.         RootIText[ cnt ].ITextFont = Font;
  422.         PrintIText(RootWnd->RPort,&RootIText[ cnt ],0,0);    
  423.     }
  424.  
  425. }
  426.  
  427.  
  428. int OpenRootWindow()
  429. {
  430.     struct NewGadget        ng;
  431.     struct Gadget   *g;
  432.     UWORD           lc,tc;
  433.     UWORD           wleft = RootLeft,wtop = WindowTop,ww,wh;
  434.  
  435.     ComputeFont(RootWidth,RootHeight);
  436.  
  437.     ww = ComputeX(RootWidth);
  438.     wh = ComputeY(RootHeight);
  439.  
  440.     if ((wleft +ww +OffX +Scr->WBorRight) > Scr->Width) wleft = Scr->Width -ww;
  441.     if ((wtop +wh +OffY +Scr->WBorBottom) > Scr->Height) wtop = Scr->Height -wh;
  442.  
  443.     if (! (g = CreateContext(&RootGList)))
  444.         return(1L);
  445.  
  446.     for(lc = 0,tc = 0; lc < Root_CNT; lc++) {
  447.  
  448.         CopyMem((char *)&RootNGad[ lc ],(char *)&ng,(long)sizeof(struct NewGadget));
  449.  
  450.         ng.ng_VisualInfo = VisualInfo;
  451.         ng.ng_TextAttr   = Font;
  452.         ng.ng_LeftEdge   = OffX +ComputeX(ng.ng_LeftEdge);
  453.         ng.ng_TopEdge    = OffY +ComputeY(ng.ng_TopEdge);
  454.         ng.ng_Width      = ComputeX(ng.ng_Width);
  455.         ng.ng_Height     = ComputeY(ng.ng_Height);
  456.  
  457.         RootGadgets[ lc ] = g = CreateGadgetA((ULONG)RootGTypes[ lc ],g,&ng,(struct TagItem *)&RootGTags[ tc ]);
  458.  
  459.         while(RootGTags[ tc ]) tc += 2;
  460.         tc++;
  461.  
  462.         if (NOT g)
  463.             return(2L);
  464.     }
  465.  
  466.     /**** CHANGED */
  467.     if (! (RootMenus = CreateMenus(RootNewMenu,GTMN_NewLookMenus,
  468.                                    TRUE,0L,
  469.                                    TAG_DONE)))
  470.         return(3L);
  471.  
  472.     LayoutMenus(RootMenus,VisualInfo,GTMN_NewLookMenus,TRUE,TAG_DONE);
  473.  
  474.  
  475.     if (! (RootWnd = OpenWindowTags(NULL,
  476.                                     WA_Left,        wleft,
  477.                                     WA_Top,         wtop,
  478.                                     WA_Width,       ww +OffX +Scr->WBorRight,
  479.                                     WA_Height,      wh +OffY +Scr->WBorBottom,
  480.                                     WA_IDCMP,       BUTTONIDCMP|CHECKBOXIDCMP|CYCLEIDCMP|STRINGIDCMP|INTEGERIDCMP|IDCMP_GADGETDOWN|IDCMP_INTUITICKS|IDCMP_MOUSEMOVE|IDCMP_MOUSEBUTTONS|
  481.                                                 
  482.                                     IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|
  483.                                                 
  484.                                                 
  485.                                     IDCMP_CHANGEWINDOW|IDCMP_REFRESHWINDOW,
  486.                                     WA_Flags,       WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  487.                                     WA_Gadgets,     RootGList,
  488.                                     WA_Title,       RootWdt,
  489.                                     WA_ScreenTitle, getString(COPYRIGHT_STRING),
  490.                                     WA_AutoAdjust,  TRUE,
  491.                                     /**** ADDED */                 
  492.                                     WA_NewLookMenus, TRUE,
  493.                                     WA_PubScreenName,PubScreenName,
  494.                                     TAG_DONE)))
  495.         return(4L);
  496.  
  497.     SetMenuStrip(RootWnd,RootMenus);
  498.     GT_RefreshWindow(RootWnd,NULL);
  499.  
  500.     RootRender();
  501.  
  502.     return(0L);
  503. }
  504.  
  505.  
  506.  
  507. VOID 
  508. CloseOneWindow (struct Window *Wnd, struct Menu *Menus, struct Gadget *GList)
  509. {
  510.  
  511.     FreeMenus(Menus);
  512.     if (Wnd) 
  513.     {
  514.         ClearMenuStrip(Wnd);
  515.         CloseWindow(Wnd);
  516.     }
  517.     FreeGadgets(GList);
  518. }
  519.  
  520.  
  521.  
  522.  
  523. VOID
  524. CloseRootWindow()
  525. {
  526.     CloseOneWindow (RootWnd,RootMenus,RootGList);
  527.     RootWnd = NULL;
  528. }
  529.  
  530.